package com.idp.app.service;

import com.idp.app.dto.*;
import com.idp.common.model.PageModel;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 用户表Service
 *
 * @author Simon
 */
public interface SyAjxxService {

    /**
     * 分页查询
     *
     * @param syAjxxSearchDto
     * @return
     */
    PageModel<SyAjxxDto> findByPage(SyAjxxSearchParamDto syAjxxSearchDto);

    /**
     * 通过id查询
     *
     * @param id
     * @return
     */
    SyAjxxDto getById(String id);

    /**
     * 新增
     *
     * @param syAjxxDto
     */
    void add(SyAjxxDto syAjxxDto);

    /**
     * 修改
     *
     * @param syAjxxDto
     */
    void update(SyAjxxDto syAjxxDto);

    /**
     * 删除
     *
     * @param id
     */
    void delete(String id);

    /**
     * 案件导入
     *
     * @param file
     */
    void importExcel(MultipartFile file);

    /**
     * 类别分布
     *
     * @return
     */
    List<SyAjxxLxDto> getAllLxNum(ScreenCommonDto screenCommonDto);

    /**
     * 空间分布
     *
     * @return
     */
    List<com.idp.system.dto.SyAjxxKjfbDto> getKjfb(ScreenCommonDto screenCommonDto);

    /**
     * 中间上边部分数据-数据总量|时间跨度|区域范围|数据类别
     *
     * @return
     */
    SyAjxxSjfwDto getSjzlSjkd(ScreenCommonDto screenCommonDto);

    /**
     * 基层治理检查指数
     *
     * @return
     */
    SyAjxxJczljczsDto getJczljczs(ScreenCommonDto screenCommonDto);

    /**
     * 地图中间部分-根据地区查询案件数量
     *
     * @param screenCommonDto
     * @return
     */
    SyAjxxAjslDto getAjxxxx(ScreenCommonDto screenCommonDto);

    /**
     * 主题-时间分布
     *
     * @param screenCommonDto
     * @return
     */
    List<SyAjxxDateDto> getAjslByDate(ScreenCommonDto screenCommonDto);

    /**
     * 主题-空间分布
     *
     * @param screenCommonDto
     * @return
     */
    List<SyAjxxKjfbDto> getZtKjfb(ScreenCommonDto screenCommonDto);

    /**
     * 主题-案件类别分布
     *
     * @param screenCommonDto
     * @return
     */
    List<SyAjxxKjfbDto> getZtAjlb(ScreenCommonDto screenCommonDto);

    /**
     * 大屏案件数据列表
     *
     * @param syAjxxSearchDto
     * @return
     */
    List<SyAjxxDto> getSjlbList(SyAjxxSearchDto syAjxxSearchDto);

    /**
     * 案件导出
     * @param syAjxxDto
     * @param response
     */
    void exportExcel(SyAjxxSearchExportDto syAjxxDto, HttpServletResponse response);

    /**
     * 查询该地区下所有的案件
     * @param syAjxxSearchDto
     * @return
     */
    List<SyAjxxDto> findAjByPage(SyAjxxSearchDto syAjxxSearchDto);

    /**
     * 生成报告
     * @param screenParamDto
     * @return
     */
    List<ReportDto> getReport(ScreenParamDto screenParamDto);

    List<SyAjxxExportDto> getListInfo(SyAjxxSearchExportDto syAjxxDto);

    List<SyAjxxExportDto> getListInfo1(SyAjxxSearchExportDto syAjxxDto);
}
